import epsilon from "./epsilon.js";
import inverseErrorFunction from "./inverse_error_function.js";

/**
 * [Probit](http://en.wikipedia.org/wiki/Probit) 是 cumulativeStdNormalProbability() 的反函数，
 * 也被称为正态分位数函数。
 *
 * 它返回与均值相差的标准差数量，表示在正态分布中可以找到第 p 个分位数的位置。
 * 例如，probit(0.5 + 0.6827/2) ≈ 1，因为 68.27% 的值通常分布在均值上下 1 个标准差范围内。
 *
 * @param {number} p
 * @returns {number} probit
 */
function probit(p) {
    if (p === 0) {
        p = epsilon;
    } else if (p >= 1) {
        p = 1 - epsilon;
    }
    return Math.sqrt(2) * inverseErrorFunction(2 * p - 1);
}

export default probit;
